The underlying invention generally relates to the field of client/server architectures and distributed processing systems. It pertains e.g. to mobile service portals, application servers and transaction system in heterogeneous telecommunication networks where these applications are employed.
In this context, the invention encompasses research and development issues that are especially directed to client/server architectures enabling users to indirectly interact with an application running on a remote application server by selecting user interaction elements on their terminals with the aid of a client program. These interactions are then transmitted via Internet and/or any corporate network to the application server where the main part of the application is executed, and the application creates output that contains the next set of possible user interactions.
Thereby, an application is defined as a program that executes cycles in which output is transferred to the users and cycles in which it waits for user interactions. It is split up into different parts that are able to handle single user interactions either directly or by using other parts, which are called “steps”.
The spread of distributed computing systems has immensely increased over the past years. Distributed computing systems are becoming more and more important, in everyday life as well as in industrial and scientific domains. The Internet and its capabilities enable people to communicate and cooperate all over the world, while high-performance parallel computers or networks of workstations allow to solve scientific and commercial problems faster than ever. Distributed computing environments open up a large spectrum of possibilities for new and exciting applications. Since multimedia is relevant to a wide range of application domains, such as entertainment, information retrieval and business systems, and potentially deployable on a magnitude of end systems, the problem of supporting multimedia is a substantial one. In a distributed environment, the structural description of a multimedia document can be stored apart from the media object content.
Conventional distributed applications are specially designed to be executed on a wide range of platforms ranging from fast desktop computers to mobile laptops and hand-held Personal Digital Assistants (PDAs), spanning several orders of magnitude in processing, storage, and communication capabilities. They reside on (mobile) clients and access or update information from remote servers, thereby using wire-bound and/or wireless telecommunication networks.
However, development and deployment still represent a major problem of distributed applications since these applications often exhibit a diverse and unpredictable performance due to their complex and heterogeneous architectures and communication mechanisms. Approaches to simplify the development and deployment processes are the usage of middleware platforms on the one hand, and the integration of online tools on the other hand. In this connection, middleware environments are intended to hide the heterogeneity of distributed systems and provide a platform for enabling the communication between distributed components. Online tools, in contrast, are intended to assist developers and users of distributed environments by supporting the analysis or control of running applications. They can advantageously be used to support the complete “online life cycle” of distributed applications, ranging from development tasks like debugging to subsequent deployment tasks like management of running applications.
With the increased computing and communication power, networks that connect a plurality of distributed workstations are becoming of interest for problem solutions which were formerly reserved to classical parallel computers. Another benefit of distributed computing systems is the permanent and location-transparent accessibility of information, which allows users to cooperate or share information all over the world. From the structural point of view, there are several ways to organize distributed computing systems. An often used paradigm is the client/server principle, which distinguishes one of the participating computers as a server that provides pre-defined services to its clients. More recent approaches have abandoned the client/server principle as the server represents a central point of failure, which decreases the reliability and availability of the overall system. Instead, peer-to-peer computing systems that do not distinguish any of the participating hosts represent a new trend for the development of distributed computing environments. Furthermore, new aspects of distributed computing have arisen with the availability of mobile devices that dynamically connect to networks via wireless communication. Despite the technological advances and independent of the architecture of distributed systems, the development of software remains complex in comparison to software development for stand-alone systems. On the one hand, this complexity results from the diversity of components used for the construction of distributed systems, while, on the other hand, complexity arises from the inherent distribution of the applied components. Important issues in this context are the management of the available resources, the localization of available functionality, the communication between distributed components, and the handling of failure situations. Due to rapid technology transitions and constantly growing requirements for distributed applications, mechanisms for an efficient and reliable building of applications have to be developed. A major contribution to the reduction of development efforts is the usage of middleware platforms. These platforms provide adequate mechanisms to abstract from the underlying computing infrastructure and enable a more or less transparent interaction between application components. Nevertheless, despite the benefits of middleware platforms, further assistance is required in order to rapidly and efficiently develop and deploy distributed applications. For example, during software development, communication between components needs to be traced for debugging or performance analysis purposes. Besides, during the subsequent software deployment, distributed applications need to be managed, and failure situations have to be detected.